package org.zxp.algorithm.sort;

import org.junit.Test;
import org.zxp.algorithm.sort.utils.Tools;

/**
 * @program: algorithm
 * @description: 选择排序实现
 * 每次pick剩余列表最小（最大的）并交换于剩余列表头部（再为排的列表中选），比较时有一个值是固定的
 * @author: X-Pacific zhang
 * @create: 2019-04-07 11:03
 **/
public class XuanzeSort {
    @Test
    public void testMname() throws Exception {
        int[] oraArray = {5,2,7,4,8,7};
        int[] resultArray = selectSort(oraArray);
        for (int i : resultArray) {
            System.out.println(i);
        }
    }

    public int[] selectSort(int[] orgArray) throws Exception {
        for (int i = 0; i < orgArray.length; i++) {
            int change_index = i;
            //5个元素
            //内圈 0比1 0比2 0比3 0比4 把最小的放到0
            //内圈 1比2 1比3 1比4 把最小的放到1
            //内圈 2比3 3比4 把最小的放到2
            //内圈 3比4 把最小的放到3
            for (int j = i+1; j < orgArray.length; j++) {
                if(orgArray[change_index] > orgArray[j]){
                    change_index = j;
                }
            }
            //每圈比完了要把最小的交换到orgArray[i]
            Tools.change(orgArray,i,change_index);
        }
        return orgArray;
    }
}
